/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package comunicacao;

import java.util.ArrayList;
import java.util.List;
import negocio.AtualizacaoDeProfessorException;
import negocio.Centro;
import negocio.Curso;
import negocio.Departamento;
import negocio.Professor;
import negocio.ProfessorInexistenteException;
import negocio.Projeto;
import negocio.RemocaoDeAlunosImpossivelException;
import negocio.Turma;
import negocio.TurmaInexistenteException;



/**
 *
 * @author Rennan
 */
public class Facade {
    
    private Departamento dep;    
    
    // ATENÇÃO: implementar o Singleton
    
    
    public Facade(){
        dep = new Departamento();        
    }
    
    public void cadastraProfessores(Professor _p){
        dep.addProfessor(_p);
    }

    public List getListaDeProfessores() {
        return dep.getProfessores();
    }
    
    // alterar dados de um professor
    public void atualizarProfessor(Professor profAtual, Professor profModificado) 
            throws AtualizacaoDeProfessorException {
        dep.atualizaProfessor(profAtual, profModificado);
    }
    
    /**
     * Pesquisa uma Professor pelo seu nome e retorna o Professor
     * se encontrar, caso contrário, lança uma exceção.
     */
    public Professor pesquisaProfessorNome(String nome) throws ProfessorInexistenteException{
        return dep.getProfessorNome(nome);
    }
    
    /**
     * Pesquisa uma Professor pela sua matrícula e retorna o Professor
     * se encontrar, caso contrário, lança uma exceção.
     */
    public Professor pesquisaProfessorMatricula(String mat) throws ProfessorInexistenteException{
        return dep.getProfessorMat(mat);
    }
    
    
    /**
     * Cadastra uma nova turma no departamento
     */
    public void cadastraTurma(Turma turma){
        dep.addTurma(turma);
    }
    
    /**
     * Localiza uma turma pela sua identificação (ID).
     */
    public Turma localizaTurmaID(String id) throws TurmaInexistenteException{
        return dep.getTurmaID(id);
    }
    
    /**
     * Retorna todas as turmas já cadastradas
     */
    public List<Turma> getTurmasCadastradas(){
        return dep.getTurmas();
    }
    
    /**
     * Remove uma quantidade de alunos da base de dados. A Turma deve ser
     * identificada antes da remoção através do "id".
     */
    public void removerAlunosCadastrados(String id, int qtd) throws TurmaInexistenteException,
            RemocaoDeAlunosImpossivelException{
        
        dep.removerAlunos(id, qtd);
    }

    public void cadastrarProjeto(Professor prof, Projeto proj){
        prof.addProjeto(proj);
    }
    
    
    
}
